import requests
from bs4 import BeautifulSoup
#url:必须以http或者https打头
# url="http://www.baidu.com"
# re=requests.get(url,timeout=10)
# #属性和方法
# #属性:status_code 状态码 200获取网页成功
# print(re.status_code)
# #encoding
# print(re.encoding)
# re.encoding="utf-8"
# print(re.text)
# #raise for status()

def gethtml(url):
    try:
        re=requests.get(url,timeout=10)#请求页面
        re.raise_for_status()#判断是否请求成功
        re.encoding="utf-8"#如果请求成功，那么修改编码为utf-8
        print("获取成功")
        return re.text#返回页面内容
    except:
        print("获取失败")
        return ''

def gethtmldata(html):
    soup=BeautifulSoup(html,"html.parser")
    print(soup.head)#属性：head
    print(soup.title)#属性：title
    print(soup.body)#属性：body
    print(soup.p)#第一个p标签
    print(soup.strings)
    for i in soup.strings:
        print(i)
    #方法：find（）或者findAll
    # print(soup.a.name)
    # print(soup.a.attrs)
    # print(soup.a.contents)
    # print(soup.a.string)
    '''string规则：
    由于HTML语法可以在标签中嵌套其他标签，所以，string属性的返回值遵守如下原则：
    如果标签内部没有其他标签，string属性返回其中的内容
    如果标签内部有其他标签，但只有一个标签，string属性返回最里面标签的内容
    如果标签内部有超过一层嵌套的标签，string属性返回None（空字符串）
    print(soup.title.string)'''
    # print(soup.title.string)
    #根据标签名字查找标签
    print(soup.find_all("a"))
    #根据属性查找标签
    print(soup.find_all('a',{"href":"https://www.google.com/"}))
    #根据内容查找标签
    print(soup.find_all("a",string="了解更多"))

def main():
    url="https://www.moe123.net"
    # print(gethtml(url))
    html=gethtml(url)
    gethtmldata(html)

# if __name__=="  main  ":
#     main()
main()


